#pragma once
#include <wdm.h>

#define INFO(...) windows::kernal::Log::Output(DPFLTR_ERROR_LEVEL, "INFO", __FILE__, __LINE__, __VA_ARGS__)
#define ERR(...) windows::kernal::Log::Output(DPFLTR_ERROR_LEVEL, "Error", __FILE__, __LINE__, __VA_ARGS__)

#define ENTER() windows::kernal::Log::Output(DPFLTR_ERROR_LEVEL, "INFO", __FILE__, __LINE__, "-> %s\n", __FUNCTION__)
#define LEAVE() windows::kernal::Log::Output(DPFLTR_ERROR_LEVEL, "INFO", __FILE__, __LINE__, "<- %s\n", __FUNCTION__)


namespace windows {
namespace kernal {
class Log {
 public:
  static NTSTATUS Output(_In_ ULONG level, _In_ LPCSTR tag, _In_ LPCSTR path,
                         _In_ ULONG line, _In_ LPCSTR format, ...);
};
}
}






